שמתי את המשתנה של המחלקה של ה db במשתנה גלובאלי כלומר ככה:
$db = new db;
$GLOBALS['db'] = $db;


זה בטוח?

5 תשובות

avatar ענה iiddaannyy ב 07 לאפריל 2013 #

לא כל כך.
אתה תמיד תוכל בטעות לערוך את המשתנה הזה. וזו גם צורת כתיבה לא נכונה.

אם שתיצור מתודה סטטית למחלקה db שתחזיר את ה-instance, או שתיצור פונקציה כזו:

function db() {
    static $db;
    if (!$db instanceof db) {
        $db = new db;
    }
    return $db;
}

avatar ענה razand ב 07 לאפריל 2013 #

לא הבנתי מה הקשר...

avatar ענה OrelBeY ב 07 לאפריל 2013 #

הקשר הוא שכל מה שתצטרך לעשות זה לכתוב פונקציה (או מתודה של מחלקת בסיס הנתונים שלך) שתבדוק אם כבר קיים מופע של המחלקה שרצית כבר (זה סטטי, אז יהיה אפשר לגשת לזה בקריאה אחרת לפונקציה), ואם כן - שתחזיר אותו. (אם לא - שתיצור מופע חדש ושתחזיר אותו.)

avatar ענה iiddaannyy ב 07 לאפריל 2013 #

הקשר הוא שמעכשיו תוכל לגשת ל-db שלך ככה:

db()->query('select...');

avatar ענה OrelBeY ב 07 לאפריל 2013 #

iiddaannyy, אני דווקא הייתי ממליץ על זה:

$db = db();
$db->query('...');

לקרוא כל פעם לפונקציה לא ממש נשמע לי. לקרוא רק כשצריך זה סבבה.

נ.ב. אופס, השאלה היא אם לאחסן את זה במשתנה גלובלי, שזה מה שעשיתי. אז מבחינתי התשובה היא כן, אבל רק כשאתה צריך. כלומר, לא לפתוח חיבור למסד בהתחלה, אלא רק בעת הצורך.